<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>组合模式</title>
</head>
<body>
    <script>
        class Combination{
            // 定义列表or执行清单
            constructor(){
                this.list = []
            }

            // 收录功能：将待调用函数放入执行清单之中
            add(cb){
                // 调用回调
                this.list.push(cb)
            }
            // 发布功能：调用执行清单里所有额内容
            fire(){
                this.list.forEach(cb=>{
                    cb()
                })
            }
        }

        // 范例
        function banner(){
            console.log('轮播图功能')
        }
        function stairs(){
            console.log('楼梯功能')
        }
        function table(){
            console.log('选项卡功能')
        }
        var com = new Combination();
        // 收录功能
        com.add(banner);
        com.add(stairs);
        com.add(table);
        // 统一调用
        setTimeout(function(){
            console.log("登录成功，页面启动");

            com.fire();
        },3000)
    </script>
</body>
</html>